﻿/*
-------------------------------------------
    Rodeo Game Engine
	Rodeo Scene Module
	Copyright(C) Marcin Goryca
-------------------------------------------
*/
#ifndef RODEO_SCENE_NODEINTERFACE_H_
#define RODEO_SCENE_NODEINTERFACE_H_

#ifndef RODEO_MATH_MATRIX4_H_
#include "math\matrix4.h"
#endif

#ifndef RODEO_SCENE_SCENE_H_
#include "scene\scene.h"
#endif

namespace rodeoscene
{

class NodeInterface
{
public:
    NodeInterface(){}
    virtual ~NodeInterface(){}

    virtual void setTransform(const rodeomath::Matrix4& world, const rodeomath::Matrix4& from_world) = 0;
    virtual void onUpdate(Scene* scene, float ms) = 0;
    virtual void onRestore(Scene* scene) = 0;
    virtual void preRender(Scene* scene) = 0;
    virtual bool isVisible(Scene* scene) = 0;
    virtual void render(Scene* scene) = 0;
    virtual void renderChildren(Scene* scene) = 0;
    virtual void postRender(Scene* scene) = 0;
    //virtual bool addChild(shared_ptr<NodeInterface> kid)=0;
};
}

#endif